import axios from 'axios'
import {useUserStore} from '@/stores/moudle/user.ts'
import { ElMessage } from 'element-plus'

import router from '@/router'



const baseURL = 'http://127.0.0.1:4000'



const instance = axios.create({
    //todo1、基础地址，超时时间
    baseURL,
    timeout:1500
})


// 请求拦截器
instance.interceptors.request.use(
    (config)=>{
        // 携带token
        const useStore = useUserStore()
        if(useStore.token){
           config.headers.Authorization = useStore.token
        }
         return config
    },
    (err)=>Promise.reject(err)
)

// 响应拦截器
instance.interceptors.response.use(
    (res)=>{
        //3.处理业务失败
        //摘取核心响应数据
        if(res.data.status === 200){
           return res
        }
    // 处理业务失败，给错误提示，抛出错误
    ElMessage.error(res.data.message || '服务异常')
     return Promise.reject(res.data)
    },

   
    (err)=>{

         // 处理401错误

        // 错误的特殊情况=》401权限不足或者 token过期=》拦截到登录
        if(err.response?.status === 401) {
            router.replace('/login')
        }
        // 错误的默认情况=》只给提示
           
        ElMessage.error(err.response.data.message || '服务异常')
        return Promise.reject(err)

    } 
)


export default instance

export {baseURL}